/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Logic.Medici;

import Entities.Medico;
import Entities.User;
import JDBC.ConnectionPool;
import JDBC.ConnectionPoolException;
import JDBC.Operazioni;
import Logger.MyLogger;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author marcy
 */
public class AutenticazioneMedici {

    protected Medico medico = null;
    protected Connection conn = null;
    protected ResultSet set = null;
    protected ConnectionPool connectionPool = null;


    public Medico getMedico() {
        return medico;
    }

    public Medico getFromDatabase(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        Medico medico = null;
        try {
            //CASO DI NUOVA SESSIONE
            //Creo una connessione e la salvo sulla sessione per riutilizzarla
            MyLogger.getLogger().debug("Autenticazione Medici -> Ottnego connessione per interrogare il database");
            connectionPool = ConnectionPool.getConnetionPool();
            conn = connectionPool.getConnection();
        } catch (ConnectionPoolException ex) {
            MyLogger.getLogger().fatal("Autenticazione Medici -> Problema con la connectionPool: "+ex.getMessage());
        }



        //Verifico che nel database ci sia il medico
        set = Operazioni.execute_query("SELECT * "
                + "FROM Medici "
                + "WHERE Username LIKE BINARY \"" + request.getParameter("username") + "\" "
                + "AND Password LIKE BINARY \"" + request.getParameter("password") + "\" ",
                conn);
        try {
            //In caso affermativo creo il medico e lo salvo sulla sessione
            if (set.next()) {
                set.beforeFirst();
                while (set.next()) {
                    medico = new Medico(set.getInt(1),
                            set.getString(2),
                            set.getString(3),
                            set.getString(4),
                            set.getString(5),
                            set.getInt(6));
                    session.setAttribute("Medico", medico);                    
                    //Avoid memory leaks :)

                    connectionPool.relaseConnection(conn);
                    conn = null;
                    connectionPool = null;
                    System.gc();

                }
            } else {
                
            }
        } catch (SQLException ex) {
            
        }
        return medico;
    }

}